/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * AdministrarDignidad.java
 *
 * Created on 14-ene-2013, 8:08:59
 */
package sisvoto.vista;

import java.util.ArrayList;
import sisvoto.DAO.ConsultasBD;
import sisvoto.ModeloDAO.DignidadDAO;
import sisvoto.Utiles.Mensajes;
import sisvoto.modelo.Dignidad;

/**
 *
 * @author DJ2-PC
 */
public class AdministrarDignidad extends javax.swing.JDialog {

    private Dignidad dignidad;
    private ArrayList<Dignidad> dignidades;

    /** Creates new form AdministrarDignidad */
    public AdministrarDignidad(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        this.dignidad = new Dignidad();
        this.dignidades = (ArrayList<Dignidad>) new ConsultasBD().buscarTodos("Dignidad");
        initComponents();
    }

    public Dignidad getDignidad() {
        return dignidad;
    }

    public void setDignidad(Dignidad dignidad) {
        this.dignidad = dignidad;
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {
        bindingGroup = new org.jdesktop.beansbinding.BindingGroup();

        imagePanel1 = new com.mycsistemas.swingec.panel.ImagePanel();
        curvesPanel1 = new com.mycsistemas.swingec.panel.CurvesPanel();
        jLblAdmDgnd = new javax.swing.JLabel();
        jPanelDignidad = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTblDignidad = new javax.swing.JTable();
        jBtnEliminarDignidad = new javax.swing.JButton();
        jBtnEditarDignidad = new javax.swing.JButton();
        jBtnNuevoDignidad = new javax.swing.JButton();
        jBtnCancDignidad1 = new javax.swing.JButton();
        jLblBusDignidad = new javax.swing.JLabel();
        jtxtNombre = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Dignidades");

        imagePanel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sisvoto/Recursos/''_10102012_1738.jpeg"))); // NOI18N
        imagePanel1.setLayout(null);

        curvesPanel1.setLayout(null);

        jLblAdmDgnd.setFont(new java.awt.Font("Georgia", 3, 18));
        jLblAdmDgnd.setForeground(new java.awt.Color(255, 255, 255));
        jLblAdmDgnd.setText("Administrar Dignidad");
        curvesPanel1.add(jLblAdmDgnd);
        jLblAdmDgnd.setBounds(170, 20, 213, 21);

        jPanelDignidad.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Tabla Administrar Dignidad", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 0, 10), new java.awt.Color(255, 255, 255))); // NOI18N
        jPanelDignidad.setOpaque(false);
        jPanelDignidad.setLayout(null);

        jTblDignidad.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null}
            },
            new String [] {
                "Title 1", "Title 2"
            }
        ));

        org.jdesktop.beansbinding.ELProperty eLProperty = org.jdesktop.beansbinding.ELProperty.create("${dignidades}");
        org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, this, eLProperty, jTblDignidad);
        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${id}"));
        columnBinding.setColumnName("Id");
        columnBinding.setColumnClass(Integer.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${nombre}"));
        columnBinding.setColumnName("Nombre");
        columnBinding.setColumnClass(String.class);
        bindingGroup.addBinding(jTableBinding);
        jTableBinding.bind();
        jTblDignidad.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTblDignidadMouseClicked(evt);
            }
        });
        jScrollPane1.setViewportView(jTblDignidad);

        jPanelDignidad.add(jScrollPane1);
        jScrollPane1.setBounds(20, 20, 280, 120);

        curvesPanel1.add(jPanelDignidad);
        jPanelDignidad.setBounds(30, 60, 310, 160);

        jBtnEliminarDignidad.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sisvoto/Recursos/trash_32.png"))); // NOI18N
        jBtnEliminarDignidad.setText("Eliminar");
        jBtnEliminarDignidad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBtnEliminarDignidadActionPerformed(evt);
            }
        });
        curvesPanel1.add(jBtnEliminarDignidad);
        jBtnEliminarDignidad.setBounds(350, 170, 130, 41);

        jBtnEditarDignidad.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sisvoto/Recursos/Pencil3.png"))); // NOI18N
        jBtnEditarDignidad.setText("Editar");
        jBtnEditarDignidad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBtnEditarDignidadActionPerformed(evt);
            }
        });
        curvesPanel1.add(jBtnEditarDignidad);
        jBtnEditarDignidad.setBounds(350, 120, 130, 41);

        jBtnNuevoDignidad.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sisvoto/Recursos/document_32.png"))); // NOI18N
        jBtnNuevoDignidad.setText("Nuevo");
        jBtnNuevoDignidad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBtnNuevoDignidadActionPerformed(evt);
            }
        });
        curvesPanel1.add(jBtnNuevoDignidad);
        jBtnNuevoDignidad.setBounds(350, 70, 130, 41);

        jBtnCancDignidad1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sisvoto/Recursos/save_32.png"))); // NOI18N
        jBtnCancDignidad1.setText("Guardar");
        jBtnCancDignidad1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBtnCancDignidad1ActionPerformed(evt);
            }
        });
        curvesPanel1.add(jBtnCancDignidad1);
        jBtnCancDignidad1.setBounds(350, 220, 130, 41);

        jLblBusDignidad.setFont(new java.awt.Font("Elephant", 0, 14));
        jLblBusDignidad.setForeground(new java.awt.Color(255, 255, 255));
        jLblBusDignidad.setText("Nombre:");
        curvesPanel1.add(jLblBusDignidad);
        jLblBusDignidad.setBounds(50, 230, 70, 30);

        org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, this, org.jdesktop.beansbinding.ELProperty.create("${dignidad.nombre}"), jtxtNombre, org.jdesktop.beansbinding.BeanProperty.create("text"));
        bindingGroup.addBinding(binding);

        jtxtNombre.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jtxtNombreActionPerformed(evt);
            }
        });
        curvesPanel1.add(jtxtNombre);
        jtxtNombre.setBounds(120, 230, 210, 30);

        imagePanel1.add(curvesPanel1);
        curvesPanel1.setBounds(0, 0, 500, 300);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(imagePanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 505, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(imagePanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 304, Short.MAX_VALUE)
        );

        bindingGroup.bind();

        pack();
    }// </editor-fold>//GEN-END:initComponents

private void jBtnCancDignidad1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnCancDignidad1ActionPerformed
// TODO add your handling code here:
    if (!jtxtNombre.getText().isEmpty()) {
        DignidadDAO ddao;
        if (this.dignidad.getId() == null) {
            if (existeDignidadNuevo()) {
                try {
                    ddao = new DignidadDAO(dignidad);
                    ddao.persist();
                    new Mensajes().StandarTick(this, "Agregado Exitosamente");
                    bindingGroup.unbind();
                    this.dignidades = (ArrayList<Dignidad>) new ConsultasBD().buscarTodos("Dignidad");
                    this.dignidad = new Dignidad();
                    bindingGroup.bind();
                    jTblDignidad.updateUI();
                } catch (Exception ex) {
                    new Mensajes().StandarWarning(this, "No es posible Agregar");
                }
            } else {
                new Mensajes().StandarWarning(this, "Ya Existe un Registro con ésta Información");
            }
        } else {
            if (existeDignidadActualizar()) {
                try {
                    ddao = new DignidadDAO(dignidad);
                    ddao.update();
                    new Mensajes().StandarTick(this, "Actualizado Exitosamente");
                    bindingGroup.unbind();
                    this.dignidades = (ArrayList<Dignidad>) new ConsultasBD().buscarTodos("Dignidad");
                    this.dignidad = new Dignidad();
                    bindingGroup.bind();
                    jTblDignidad.updateUI();
                } catch (Exception ex) {
                    new Mensajes().StandarWarning(this, "No es posible Actualizar");
                }
            } else {
                new Mensajes().StandarWarning(this, "Ya Existe un Registro con ésta Información");
            }
        }
    } else {
        new Mensajes().StandarWarning(this, "Ingrese el Nombre de la Dignidad");
    }
}//GEN-LAST:event_jBtnCancDignidad1ActionPerformed

private void jBtnNuevoDignidadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnNuevoDignidadActionPerformed
// TODO add your handling code here:
    jtxtNombre.setText("");
    jtxtNombre.setEnabled(true);
    this.dignidad = new Dignidad();

}//GEN-LAST:event_jBtnNuevoDignidadActionPerformed

private void jTblDignidadMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTblDignidadMouseClicked
// TODO add your handling code here:
    if (jTblDignidad.getSelectedRow() != -1) {
        String idpriv = String.valueOf(jTblDignidad.getValueAt(jTblDignidad.getSelectedRow(), 0));
        ArrayList<Dignidad> paux = (ArrayList<Dignidad>) new ConsultasBD().buscarPOR("Dignidad", "id", "'" + idpriv + "'");
        this.dignidad = paux.get(0);
        jtxtNombre.setText(dignidad.getNombre());
        jtxtNombre.setEnabled(false);
    }
}//GEN-LAST:event_jTblDignidadMouseClicked

private void jBtnEditarDignidadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnEditarDignidadActionPerformed
    if (jTblDignidad.getSelectedRow() != -1) {
        if (dignidad.getId() != null) {
            jtxtNombre.setEnabled(true);
        }
    } else {
        new Mensajes().StandarWarning(this, "Seleccione la Dignidad que Desea Editar");
    }// TODO add your handling code here:
}//GEN-LAST:event_jBtnEditarDignidadActionPerformed

private void jBtnEliminarDignidadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnEliminarDignidadActionPerformed
// TODO add your handling code here:
    if (jTblDignidad.getSelectedRow() != -1) {
        String idpriv = String.valueOf(jTblDignidad.getValueAt(jTblDignidad.getSelectedRow(), 0));
        ArrayList<Dignidad> paux = (ArrayList<Dignidad>) new ConsultasBD().buscarPOR("Dignidad", "id", "'" + idpriv + "'");
        this.dignidad = paux.get(0);
        if (new Mensajes().ConfirmacionDialogowarning(this, "¿Está seguro de Eliminar éste Registro?") == 0) {
            try {
                DignidadDAO eDAO = new DignidadDAO(dignidad);
                eDAO.update();
                eDAO.remove();
                new Mensajes().ConfirmacionDialogotick(this, "El Registro se ha Eliminado Con Éxito");
                jtxtNombre.setEnabled(true);
                jtxtNombre.setText("");
                bindingGroup.unbind();
                this.dignidades = (ArrayList<Dignidad>) new ConsultasBD().buscarTodos("Dignidad");
                bindingGroup.bind();
                jTblDignidad.updateUI();
            } catch (Exception ex) {
                // ex.printStackTrace();
                new Mensajes().StandarWarning(this, "                 No es Posible Eliminar. \n Éste Registro está Siendo Utilizado por el Sistema");
            }
        }
    } else {
        new Mensajes().StandarWarning(this, "Seleccione la Dignidad que Desea Eliminar");
    }
}//GEN-LAST:event_jBtnEliminarDignidadActionPerformed

private void jtxtNombreActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jtxtNombreActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_jtxtNombreActionPerformed

    /**
     * @param args the command line arguments
     */

    public ArrayList<Dignidad> getDignidades() {
        return dignidades;
    }

    public void setDignidades(ArrayList<Dignidad> dignidades) {
        this.dignidades = dignidades;
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private com.mycsistemas.swingec.panel.CurvesPanel curvesPanel1;
    private com.mycsistemas.swingec.panel.ImagePanel imagePanel1;
    private javax.swing.JButton jBtnCancDignidad1;
    private javax.swing.JButton jBtnEditarDignidad;
    private javax.swing.JButton jBtnEliminarDignidad;
    private javax.swing.JButton jBtnNuevoDignidad;
    private javax.swing.JLabel jLblAdmDgnd;
    private javax.swing.JLabel jLblBusDignidad;
    private javax.swing.JPanel jPanelDignidad;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTblDignidad;
    private javax.swing.JTextField jtxtNombre;
    private org.jdesktop.beansbinding.BindingGroup bindingGroup;
    // End of variables declaration//GEN-END:variables

    private boolean existeDignidadNuevo() {
        //retorna true si el usuario ya existe
        ArrayList<Dignidad> usuars = (ArrayList<Dignidad>) new ConsultasBD().buscarPOR("Dignidad", "nombre", "'" + jtxtNombre.getText() + "'");
        if (usuars.isEmpty()) {
            return true;
        }
        return false;
    }

    private boolean existeDignidadActualizar() {
        //retorna true si el usuario ya existe

        ArrayList<Dignidad> usuars = (ArrayList<Dignidad>) new ConsultasBD().buscarExcepto("Dignidad", "id", String.valueOf(dignidad.getId()), "nombre", "'" + this.dignidad.getNombre() + "'");
        if (usuars.isEmpty()) {
            return true;
        }
        return false;
    }
}
